package com.hong.mp.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 默认情况下
 * 1) BaseMapper根据pojo类去数据库中寻找与该pojo类名称一致的表
 *    如果使用@TableName 使用value表名去数据库中寻找
 * 2) 要想让表中的数据赋值给pojo类对应的属性 要求: 表的列名与类的属性名一致
 *    如果不一致：
 *    表列名(以下划线分割)---pojo类属性名(驼峰式命名): 自动映射
 *    表列名(以下划线分割)---pojo类属性名(以下划线分割): 将mp的下划线转驼峰命名关闭
 *    任意的不一致: @TableFiled 指定value属性 value属性表示表中的列名
 *
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "user") // 该注解指定数据库中的哪张表与当前pojo类对应
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private String hobby;

    @TableField(fill = FieldFill.INSERT) // 在添加的时候为字段填充值
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE) // 在添加或者更新的时候为字段填充值
    private Date updateTime;

    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;

    @TableLogic
    private Integer deleted;
}
